import request from "@/utils/request";

const baseUrl = "core/messageRecord";
// const userId = JSON.parse(sessionStorage.getItem("USER_INFO") || "{}").id;
const myMessageApi = {
  /**
   * 分页查询消息发送记录列表
   * @param params
   * @returns
   */
  getMessageList(params: MyMessagePageQuery) {
    const query = encodeURIComponent(JSON.stringify({ ...params }));
    return request<any, PageResult<MyMessagePageVO[]>>({
      url: `${baseUrl}/getMessageRecords?object=${query}`,
      method: "get",
    });
  },

  /**
   * 查询未读消息数量
   * @returns
   */
  getUnreadMessageCount() {
    return request<any, number>({
      url: `${baseUrl}/unreadMessage`,
      method: "get",
    });
  },

  /**
   * 标记消息为已读
   * @returns
   */
  readMessage(id: number) {
    return request<any, any>({
      url: `${baseUrl}/readMessage?id=${id}`,
      method: "post",
    });
  },
};
export default myMessageApi;

export interface MyMessagePageQuery extends PageQuery {
  title?: string;
  status?: number;
  readStatus?: number;
  msgType?: number;
  msgLevel?: number;
  publisherName?: string;
}

/** 通知公告分页对象 */
export interface MyMessagePageVO {
  id: number; // 主键ID
  messageId: number; // 消息ID
  messageTitle: string; // 消息标题
  messageType: number; // 消息类型(1=系统通知,2=业务通知,3=其他通知)
  // messageLevel: number; // 消息等级(1=普通,2=重要,3=紧急)
  targetType: number; // 目标类型(0=全体,1=指定角色,2=指定用户,3=指定用户和角色)
  publisherId: number; // 发布人ID
  publisherName: string; // 发布人姓名
  publishTime: string; // 发布时间
  userId: number; // 接收用户ID
  userName: string; // 接收用户名称
  readStatus: number; // 阅读状态(0=未读,1=已读)
  readTime: string; // 阅读时间
  createTime: string; // 创建时间
  createName: string; // 创建人
  createUser: number; // 创建人id
  modifyTime: string; // 修改时间
  modifyName: string; // 修改人
  modifyUser: number; // 修改人id
  isDelete: number; // 是否删除 0=正常 1=删除
}

export interface MyMessageDetailVO {
  content: string; // 消息内容
  createTime: string; // 创建时间
  id: number; // 消息ID
  // msgLevel: number; // 消息等级
  msgType: number; // 消息类型
  publishTime: string; // 发布时间
  status: number; // 发布状态
  targetType: number; // 目标类型
  title: string; // 消息标题
  updateTime: string; // 更新时间
  publisherName: string; // 发布者名称
}
